<?php 
header("content-type: text/html; charset=utf-8");
?>

<p>
	<h2>每个请求都是独立PHP上下文</h2>
<?php
static $StaticVar = 1;
$StaticVar++;

echo $StaticVar.'<br/>';
?>
</p>

<p>
	<h2>简单类型的按值赋值和按引用赋值</h2>
<?php
$var_a = 1;
$var_b = $var_a;
$var_c = &$var_a;
$var_d = $var_c;
$var_e = &$var_c;
$var_e = 2;

echo "var_a:$var_a, var_b:$var_b, var_c:$var_c, var_d:$var_d, var_e:$var_e<br/>"

?>
</p>

<p>
	<h2>数组的按值赋值和按引用赋值</h2>
<?php
$var_arr = array(1, 2, 3);
$var_arr_copy = $var_arr;
$var_arr_ref = &$var_arr;

array_push($var_arr_ref, 4);

echo join($var_arr, ',').'<br/>';
echo join($var_arr_copy, ',').'<br/>';
echo join($var_arr_ref, ',').'<br/>';
?>
</p>

<p>
	<h2>自定义类型的按值赋值和按引用赋值</h2>
<?php
class TestClass {
	private $value = 1;
	
	function setValue($value) {
		$this->value = $value;
	}
	
	function getValue() {
		return $this->value;	
	}
}

$var_obj = new TestClass();
$var_obj_copy = $var_obj;
$var_obj_ref = &$var_obj;

$var_obj_ref->setValue(2);

echo $var_obj->getValue().'<br/>';
echo $var_obj_copy->getValue().'<br/>';
echo $var_obj_ref->getValue().'<br/>';
?>
</p>